\documentclass{article}
\usepackage{ctex}
\usepackage{graphicx, subcaption}

% Language setting
% Replace `english' with e.g. `spanish' to change the document language
\usepackage[english]{babel}

% Set page size and margins
% Replace `letterpaper' with `a4paper' for UK/EU standard size
\usepackage[letterpaper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
\geometry{margin=1in}
% Useful packages
\usepackage{amsmath}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}

% SQL语言
\usepackage{listings}
\usepackage{xcolor}

\begin{document}
	
	% 自定义标题页
	\begin{titlepage}
		\begin{center}
			\vspace*{1cm}
			
			% 实验标题
			\Huge
			\textbf{编译原理第一次实验}
			
			\vspace{0.5cm}
			
			\vspace{1.5cm}
			
			% 作者信息表格
			\Large
			\begin{tabular}{rl}
				姓名： & 侯浩然 \\
				班级： & 计算机2106 \\
				学号： & 2211314605 \\
			\end{tabular}
			
			\vfill
			
			% 实验日期
			\Large
			\today
			
		\end{center}
	\end{titlepage}
	

	
	\section{程序设计}
	
	\begin{figure}[tbph!]
		\centering
		\includegraphics[width=0.7\linewidth]{screenshot001}	
		\label{fig:screenshot001}
	\end{figure}
	
	上图为声明变量区，定义了几种常用的符号对应的正规式。
	
	其中string对应的为FormatString类型，需要注意在两个引号之间的字符可以为任何字符，包括空格，所以不能直接使用id对应的类型。
	
	\begin{figure}[htbp]
		\centering
		\subcaptionbox{S605}{
			\includegraphics[width = .45\linewidth]{screenshot002}
		}
		\subcaptionbox{C605}{
			\centering
			\includegraphics[width = .45\linewidth]{screenshot003}
		}
	\end{figure}
	
	下面是对各个模式匹配后的运行内容，写入到文件中去。
	
	\begin{figure}[tbph!]
		\centering
		\includegraphics[width=0.7\linewidth]{screenshot004}
		\caption{}
		\label{fig:screenshot004}
	\end{figure}
	
\newpage	
	最后是主函数，打开两个文件并进行写入，然后调用分析程序，最后关闭文件，结束程序。
	
	
	\newpage
	\section{运行结果分析}
	
	\begin{figure}[tbph!]
		\centering
		\includegraphics[width=0.3\linewidth]{screenshot005}
		\caption{}
		\label{fig:screenshot005}
	\end{figure}
	
	与预期结果一致。
	
\end{document}

